home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok52 / gadgeted / txt / io.mod < prev    next >
Text File  |  1993-11-04  |  3KB  |  93 lines

  1. (*----------------------------------------------------------------------
  2.   :Program.    Io.mod
  3.   :Contents.   Abspeichern und Laden einer Gadget-Struktur
  4.   :Author.     Hubert Bildstein
  5.   :Copyright.  Public Domain
  6.   :Language.   Modula-2
  7.   :Translator. M2Amiga V3.3d
  8.   :History.    V1.0   5.12.1990
  9. ----------------------------------------------------------------------*)
  10.  
  11. IMPLEMENTATION MODULE Io;
  12. (* Modul zur Ein/Ausgabe der Gadgetinformationen *)
  13.  
  14. FROM SYSTEM     IMPORT ADDRESS, ADR, BYTE;
  15. FROM FileSystem IMPORT File, Response, Lookup, Close, ReadBytes, WriteBytes;
  16. FROM Str        IMPORT Compare;
  17.  
  18. CONST BufferSize = 512;
  19.       ID = "GEd00";    (* "00" für evtl. spätere Dateiformate *)
  20.  
  21. VAR f      : File;
  22.     actual : LONGINT;
  23.  
  24. (*--------------------------------------------------------------------------*)
  25.  
  26. PROCEDURE Load (    name   : ARRAY OF CHAR;
  27.                 VAR Feld   : ARRAY OF BYTE;
  28.                 VAR WFeld  : ARRAY OF BYTE;
  29.                 VAR length : LONGINT) : Response;
  30. (* Einladen der Gadgetinformation in ein Feld *)
  31.  
  32. VAR ReadID : ARRAY [1..SIZE(ID)] OF CHAR;
  33.     len    : LONGINT;
  34.  
  35. BEGIN
  36.  
  37.  (* Öffnen *)
  38.  Lookup (f,name,BufferSize,FALSE);
  39.  
  40.  IF (f.res # done) THEN Close(f); RETURN f.res END;
  41.  
  42.  (* Lesen *)
  43.  ReadBytes (f,ADR(ReadID),SIZE(ID),actual);
  44.  IF (Compare(ID,ReadID) # 0) THEN Close (f); RETURN notdone END;
  45.  
  46.  ReadBytes (f,ADR(len),SIZE(len),actual);          (* Länge *)
  47.  ReadBytes (f,ADR(WFeld),len,actual);              (* Window *)
  48.  ReadBytes (f,ADR(length),SIZE(length),actual);    (* Länge *)
  49.  ReadBytes (f,ADR(Feld),length,actual);            (* Gadgets *)
  50.  
  51.  IF (f.res # done) THEN Close (f); RETURN f.res END;
  52.  
  53.  (* Schließen *)
  54.  Close (f);
  55.  RETURN f.res;
  56.  
  57. END Load;
  58.  
  59. (*--------------------------------------------------------------------------*)
  60.  
  61. PROCEDURE Save (name   : ARRAY OF CHAR;
  62.                 adr1   : ADDRESS;
  63.                 len1   : LONGINT;
  64.                 adr2   : ADDRESS;
  65.                 len2   : LONGINT) : Response;
  66. (* Speichern der Gadgetinformationen *)
  67.  
  68. BEGIN
  69.  
  70.  (* Öffnen *)
  71.  Lookup (f,name,BufferSize,TRUE);
  72.  
  73.  IF (f.res # done) THEN Close(f); RETURN f.res END;
  74.  
  75.  (* Schreiben *)
  76.  WriteBytes (f,ADR(ID),SIZE(ID),actual);           (* Kennung *)
  77.  WriteBytes (f,ADR(len1),SIZE(len1),actual);       (* Länge *)
  78.  WriteBytes (f,adr1,len1,actual);                  (* FensterInfo *)
  79.  WriteBytes (f,ADR(len2),SIZE(len2),actual);       (* Länge *)
  80.  WriteBytes (f,adr2,len2,actual);                  (* Inhalt *)
  81.  
  82.  IF (f.res # done) THEN Close(f); RETURN f.res END;
  83.  
  84.  (* Schließen *)
  85.  Close (f);
  86.  RETURN f.res;
  87.  
  88. END Save;
  89.  
  90. (*--------------------------------------------------------------------------*)
  91.  
  92. END Io.
  93.